1. Field of the Disclosure
The present disclosure is generally directed to clock management and, more particularly, to techniques for integrated circuit clock management using pulse skipping.
2. Description of the Related Art
Traditionally, power management of computer systems has been implemented by adjusting a system clock frequency (and frequently an associated voltage of a system clock) to achieve optimal (or near optimal) power savings at a given performance level. Typically, the system clock frequency has been adjusted by changing a frequency of a phase locked loop (PLL), which has provided the system clock. Unfortunately, when a frequency of a PLL is adjusted there may be a latency of several hundred microseconds before the PLL re-locks and the system can resume normal operation. In processor systems that employ multiple PLLs, each of which provide respective clock signals for various subsystems, the system latency may assume the latency of the PLL with the greatest re-locking latency. Moreover, in systems employing multiple PLLs, synchronization of respective clock signals provided by the PLLs may require relatively sophisticated design solutions.
Traditionally, power management of computer systems has been facilitated by a number of different techniques. For example, legacy computer systems have implemented advanced power management (APM) compliant designs that employed operating system (OS) control of power management, via a basic input output system (BIOS). Today, most computer systems employ advanced configuration and power interface (ACPI) compliant designs to facilitate power management. The ACPI specification provides for OS control of system power management via a BIOS, which provides the OS with methods for directly controlling low-level hardware details, such that the OS has nearly complete control over power savings. In general, the ACPI specification facilitated the introduction of power management features, which were previously only available in portable computers, to desktop computers and servers. For example, a computer system may be put into extremely low-energy states from which ordinary interrupts can quickly wake the system.
The ACPI specification defines seven states (G0, G1-S1, G1-S2, G1-S3, G1-S4, G2, and G3) for an ACPI-compliant computer system. The G0 state is the normal working state of the computer system. In the G0 state a central processing unit (CPU) may execute instructions or repeatedly transition into and out of low-energy states, e.g., C0-Cn and D0-D3. For example, laptop computer systems routinely power down all currently unused devices when battery-powered. The G1 state is subdivided into four sleep modes S1 through S4. The time needed to bring the system from state G1 to state G0 is shortest for the S1 mode, which is the most power-hungry of the sleep modes. The G2 state is almost the same as the G3 state (mechanical off), but in the G2 state some components remain powered so the computer can “wake” in response to input from a keyboard, a local area network (LAN) device, or a universal serial bus (USB) device, etc. The G2 state is typically initiated by the OS in response to a user issued shut-down command. The device states D0-D3 are device dependent. In the D0 state, the device is in a fully-on operating state. The D1 and D2 states are intermediate power states whose definition varies by device. In the D3 state, the device is powered off and is unresponsive.
The ACPI specification defines four central processing unit (CPU) power states, i.e., C0-C3. The C0 state is the CPU operating state. The C1 state is where the CPU is not executing instructions, but can return to an executing state essentially instantaneously. The C2 state is a state where the CPU maintains all software visible state, but may take longer to wake-up. In the C3 state, the CPU does not need to keep its cache coherent, but otherwise maintains CPU state. The ACPI specification defines sixteen performance (P) states that a device or CPU (operating in D0 or C0, respectively) can enter. While the P states are implementation dependent, P0 is always the highest-performance state, with P1 to Pn being successively lower-performance states, up to an implementation-specific limit of n, which is less than or equal to sixteen.
With reference to FIG. 1, a conventional phase locked loop (PLL) 100 is illustrated that provides an application appropriate output clock signal at a frequency that is responsive to a reference clock signal and one or more associated divider values. The reference clock signal is provided to an input of an input divider 102 of the PLL 100. A divider value of the input divider 102 is dictated by a value stored in an input divider register 104. An output of the input divider 102 is coupled to a first input of a phase detector 106, whose output is coupled to an input of a loop filter 108. An output of the loop filter 108 is coupled to an input of a charge pump 110, whose output is coupled to an input of a voltage controlled oscillator (VCO) 112. An output of the VCO 112 is coupled to an input of a feedback divider 114, whose output is coupled to a second input of the phase detector 106. A divider value of the feedback divider 114 is dictated by a value stored in a feedback divider register 116.
With reference to FIG. 2, a conventional processor system 200 is illustrated that includes a single PLL 202, which may be configured in the same manner as the PLL 100 of FIG. 1. The PLL 202 is coupled to a power management state controller 204, which is configured to write values to one or more registers, e.g., input and feedback divider registers, of the PLL 202 to cause the PLL 202 to provide a CPU clock signal to CPU 206 at a desired frequency for a given power state.
Moving to FIG. 3, a conventional processor system 300 is illustrated that employs multiple PLLs. A main PLL 302 receives a reference clock signal and provides an output clock signal (having a desired frequency) to inputs of PLL 304 and PLL 306, respectively. The PLL 304 provides a CPU clock signal to CPU 310 and the PLL 306 provides a clock signal to circuit 312, which may be a CPU or other circuit which requires a clock signal. The PLLs 304 and 306 may provide a clock signal at the same or different frequencies. The PLLs 302, 304 and 306 are coupled to a power management state controller 308, which is configured to write values to registers, e.g., input and feedback divider registers, of the PLLs 302-306 to cause the PLLs 304 and 306 to provide clock signals at one or more desired frequencies corresponding to desired power states. It should be appreciated that when the frequencies of the clock signals provided by the PLLs 302-306 are changed at the same time, latency associated with the frequency change corresponds to a re-locking time of the slowest one of the PLLs 302-306.
What is needed are clock management techniques that generally reduce latency associated with frequency adjustment of a clock signal.
The use of the same reference symbols in different drawings indicates similar or identical items.